Implementing (pure) operation-based CRDTs in Scala

Project

Replicated data types (RDTs) such as CRDTs are becoming increasingly popular as a simplified way for programming distributed systems. RDTs are local data structures with a familiar interface (such as sets, lists, trees) that can automatically synchronize data between multiple devices in the background. There are different flavors of CRDTs (e.g., state-based and operation-based). Operation-based CRDTs have stricter requirements on the message-transport layer when compared to their state-based counterparts.

In this project, you will implement a (pure) operation based CRDT framework in Scala, as well as the required reliable causal broadcast. In a second step, you will evaluate the performance of your implementation and compare it to an existing delta-state based CRDT implementation. Key aspects of this project will be the efficiency and composability of the implemented CRDTs.